using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;

namespace Base
{
    public class GameInformation
    {
        private static int unitCount = 0;
        private static int projectileCount = 0;
        private static string mouseState;
        private static GameConfiguration configuration = new GameConfiguration();
        private static GraphicsDeviceManager graphicsManager;
        private static Game game;
        private static bool resChanged = false;
        private static bool createUnit = false;
        private static string unitType;

        /// <summary>
        /// Gives the current count of units in the game
        /// </summary>
        public static int UnitCount
        {
            get { return GameInformation.unitCount; }
            set { GameInformation.unitCount = value; }
        }
        
        /// <summary>
        /// Stores game gonfiguration and user options
        /// </summary>
        public static GameConfiguration Configuration
        {
            get { return GameInformation.configuration; }
            set { GameInformation.configuration = value; }
        }
        
        /// <summary>
        /// Graphics manager
        /// </summary>
        public static GraphicsDeviceManager GraphicsManager
        {
            get { return GameInformation.graphicsManager; }
            set { GameInformation.graphicsManager = value; }
        }

        /// <summary>
        /// The instance of the running game
        /// </summary>
        public static Game Game
        {
            get { return GameInformation.game; }
            set { GameInformation.game = value; }
        }

        /// <summary>
        /// Flag to indicate resolution has changed
        /// Must wait for the next cycle since doing it immediately can cause errors
        /// </summary>
        public static bool ResChanged
        {
            get { return resChanged; }
            set { resChanged = value; }
        }

        /// <summary>
        /// Unit creation mode
        /// </summary>
        public static bool CreateUnit
        {
            get { return createUnit; }
            set { createUnit = value; }
        }

        /// <summary>
        /// The type of unit being created
        /// </summary>
        public static string UnitType
        {
            get { return unitType; }
            set { unitType = value; }
        }

        /// <summary>
        /// Current count of projectiles in game.  Information purposes only
        /// </summary>
        public static int ProjectileCount
        {
            get { return GameInformation.projectileCount; }
            set { GameInformation.projectileCount = value; }
        }

    }
}
